package cn.zzz.openplatform.amap.model.direction;

import cn.zzz.openplatform.amap.constant.AmapUrlConstant;
import cn.zzz.openplatform.amap.model.AmapOpenApiRequest;
import lombok.*;

/**
 * 公交路径规划请求参数
 * <a href="https://lbs.amap.com/api/webservice/guide/api/direction#t5">接口文档</a>
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AmapTransitIntegratedDirectionRequest extends AmapOpenApiRequest<AmapTransitIntegratedDirectionResponse> {

    /**
     * 出发点
     * 规则：lon,lat（经度,纬度），如117.500244, 40.417801 经纬度小数点不超过6位
     * 必填：是
     */
    private String origin;

    /**
     * 目的地
     * 规则：lon,lat（经度,纬度），如117.500244, 40.417801 经纬度小数点不超过6位
     * 必填：是
     */
    private String destination;

    /**
     * 城市/跨城规划时的起点城市
     * 支持市内公交换乘/跨城公交的起点城市。
     * 可选值：城市名称/citycode
     * 必填：是
     */
    private String city;

    /**
     * 跨城公交规划时的终点城市
     * 跨城公交规划必填参数。
     * 可选值：城市名称/citycode
     * 必填：否（跨城必填）
     */
    private String cityd;

    /**
     * 返回结果详略
     * 可选值：base(default)/all
     * base：返回基本信息；all：返回全部信息
     * 必填：否
     */
    private String extensions;

    /**
     * 公交换乘策略
     * 可选值：
     * 0：最快捷模式；
     * 1：最经济模式；
     * 2：最少换乘模式；
     * 3：最少步行模式；
     * 5：不乘地铁模式
     * 必填：否
     */
    private Integer strategy;

    /**
     * 是否计算夜班车
     * 可选值：
     * 0：不计算夜班车；
     * 1：计算夜班车
     * 必填：否
     */
    private Integer nightflag;

    /**
     * 出发日期
     * 格式示例：date=2014-3-19。在无需设置预计出发时间时，请不要在请求之中携带此参数。
     * 必填：否
     */
    private String date;

    /**
     * 出发时间
     * 格式示例：time=22:34。在无需设置预计出发时间时，请不要在请求之中携带此参数。
     * 必填：否
     */
    private String time;

    @Override
    public Class<AmapTransitIntegratedDirectionResponse> getResponseClass() {
        return AmapTransitIntegratedDirectionResponse.class;
    }

    @Override
    public String getUrl() {
        return AmapUrlConstant.TRANSIT_PATH_PLAN_URL;
    }
}
